// tutorial.cpp

#include <cmath>
#include <cstdlib>
#include <iostream>
#include <string>
#include "db.h"
#include "table.h"
#include "output.h"
#include "util.h"

int main(int argc, char* argv[])
{     
    std::cout << "请全大写输入语句，我不会写词法解析谢谢" << std::endl;
    while (true)
    {
        std::cout << "\033[36mTINYDB==>";
        char ins[100]; //用来接受指令
        std::cin.getline(ins, 100);
 
        //Quit 退出数据库
        if (ins[0] == 'e'&& ins[1] == 'x'&& ins[2] == 'i'&& ins[3] == 't')
        {
            std::cout << "\033TINYDB 已退出" << std::endl;
            break;
        }
        //CREATE DATABASE 
        else if (ins[0] == 'C' && ins[1] == 'R' && ins[2] == 'E' && ins[3] == 'A' && ins[4] == 'T' && ins[5] == 'E'&& ins[6] == ' '&& ins[7] == 'D' 
        && ins[8] == 'A'&& ins[9] == 'T' &&ins[10] == 'A' && ins[11] == 'B' && ins[12] == 'A' && ins[13] == 'S' && ins[14] == 'E'){
            create_db(ins);
        }
        //USE DATABASE
        else if (ins[0] == 'U' && ins[1] == 'S' && ins[2] == 'E' ){
            use_db(ins);
        }
         //CREATE TABLE      创建表格功能
        else if (ins[0] == 'C' && ins[1] == 'R' && ins[2] == 'E' && ins[3] == 'A' && ins[4] == 'T' && ins[5] == 'E'&& ins[6] == ' '&& ins[7] == 'T' 
        && ins[8] == 'A'&& ins[9] == 'B' &&ins[10] == 'L' && ins[11] == 'E')
        {
            check_dbPath();
            Create_table(ins);
        }
        //DROP DATABASE        删除表格功能    
        else if (ins[0] == 'D' && ins[1] == 'R' && ins[2] == 'O' && ins[3] == 'P'&& ins[4] == ' '&& ins[5] == 'T' 
        && ins[6] == 'A'&& ins[7] == 'B' &&ins[8] == 'L' && ins[9] == 'E' )
        {
            check_dbPath();
            Drop_table(ins);
        }
        //DROP TABLE        删除表格功能    
        else if (ins[0] == 'D' && ins[1] == 'R' && ins[2] == 'O' && ins[3] == 'P'&& ins[4] == ' '&& ins[5] == 'D' 
        && ins[6] == 'A'&& ins[7] == 'T' &&ins[8] == 'A' && ins[9] == 'B' && ins[10] == 'A' && ins[11] == 'S' && ins[12] == 'E')
        {
            drop_db(ins);
            dbPath = "";
        }
 
        //TABLE LIST        查看所有表格
        else if (ins[0] == 'T' && ins[1] == 'A' && ins[2] == 'B' && ins[3] == 'L' && ins[4] == 'E'&& ins[5] == 'S' )
        {
            check_dbPath();
            Table_list();
        }
 
        //INSERT INTO       插入数据
        else if (ins[0] == 'I' && ins[1] == 'N' && ins[2] == 'S' && ins[3] == 'E' && ins[4] == 'R' && ins[5] == 'T')
        {
            check_dbPath();
            Insert_table_data(ins);
        }
 
        //DELETE        删除数据
        else if (ins[0] == 'D' && ins[1] == 'E' && ins[2] == 'L' && ins[3] == 'E' && ins[4] == 'T' && ins[5] == 'E')
        {
            check_dbPath();
            Delete_table_data(ins);
        }
 
        //UPDATE        更新数据
        else if (ins[0] == 'U' && ins[1] == 'P' && ins[2] == 'D' && ins[3] == 'A' && ins[4] == 'T' && ins[5] == 'E')
        {
            check_dbPath();
            Updata_table_data(ins);
        }
 
        //SELECT        选择数据
        else if (ins[0] == 'S' && ins[1] == 'E' && ins[2] == 'L' && ins[3] == 'E' && ins[4] == 'C' && ins[5] == 'T')
        {
            check_dbPath();
            Selete_table_data(ins);
        }
 
        //ERROR     指令错误
        else
        {
            std::cout << "Error instruction!" << std::endl;
        }
    }
 
    return 0;

}